MPI生成和cray的aprun

您所在的位置:网站首页 cray cray什么意思 MPI生成和cray的aprun

MPI生成和cray的aprun

2024-06-17 22:21| 来源: 网络整理| 查看: 265

Cray MPI直到最近才支持MPI_Comm_spawn,它为衍生的MPI作业管理资源的解决方案是独一无二的。使用aprun启动占位符作业,以管理用于托管生成的作业的资源,即,将托管生成的MPI队列的核心/节点。占位作业管理的一组资源称为“排名池”,类似于内存池。下面是如何设置和使用等级池:

rankpool.c

代码语言:javascript复制int main(int argc, char **argv) { MPI_Init(&argc, &argv); /* Name this rank pool "all_nodes", which will be * used by MPI_Comm_spawn to identify it. */ MPIX_Comm_rankpool(MPI_COMM_WORLD, "all_nodes", /* 60 seconds timeout */ 60); MPI_Finalize(); }

spawning_app.c

代码语言:javascript复制[ ... code goes here ... ] MPI_Info_create(&info); /* key = "rankpool", value = "all_nodes" */ MPI_Info_set(info, "rankpool", "all_nodes"); MPI_Comm_spawn("master", argv, num_ranks, info, 0, comm, &child_comm, MPI_ERRCODES_IGNORE); [ ... more code ... ]

如果你想在三个节点上分配6个等级,你可以使用aprun -n 6 -N 2启动你的等级池,这样你就有了6个总等级,每个节点有2个等级。

如果您希望为生成的等级提供更具体的布局,则可以在传递给MPIX_Comm_rankpool的通信器中对等级进行重新排序,以获得此效果。例如,如果您的主作业派生了不同的子作业,每个子作业具有4个等级,并且您希望每个子作业的等级均匀分布在节点上,则可以从以下位置对MPI_COMM_WORLD中的等级进行重新排序:

代码语言:javascript复制 MPI_COMM_WOLRD -------------- node 1 node 2 node 3 node 4 ranks 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

要这样做:

代码语言:javascript复制 reordered_comm -------------- node 1 node 2 node 3 node 4 ranks 0 4 8 12 1 5 9 13 2 6 10 14 3 7 11 15

MPIX_Comm_rankpool将尝试为每个子作业分配一组连续的等级,因此子作业通常在每个节点上都有一个等级。

有关这一切如何工作的更多详细信息,请参阅Cray的动态流程管理whitepaper。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3